#include<iostream>
#define maxSize 1000
#define OK 1 
#define ERROR -1
#define OVERFLOW -2 
using namespace std;
typedef int status;

typedef struct
{
 string no;
 string name;
 float price;
}elemType;  										 //elemType的结构体类型 

typedef struct 
{
	elemType *elem;									//elemType的结构体类型指针 
	int length;
}SqList;								 		  //SqList的结构体类型 

status initList(SqList &L)
{
	L.elem = new elemType[maxSize];				//为顺序表分配一个大小为maxSize的数组空间 
	if(!L.elem) exit(OVERFLOW);					//判断是否分配成功 
	L.length = 0;							//空表长度为0 
	return OK;
}

int GetLength(SqList L)					//获取顺序表的长度的函数 
{
	return L.length; 
} 

int isEmpty(SqList L				//判断顺序表是否为空的函数 
{
	if(L.length==0)
	return 1;
	else return 0;
}

void clearList(SqList &L)			//清空函数 
{
	L.length = 0;
}

status GetElem(SqList &L,int i,elemType &e)			//获取顺序表的元素函数 
{
	if(i<1||i>L.length)
	return ERROR;
	e = L.elem[i-1];
	return OK;
}

//int locateElem(SqList L,int i,elemType &e)
//{
//	for(i=0;i<L.length;i++)
//	{
//		if(L.elem[i]==e)
//		return i+1;
//		return 0;
//	}
//}

int main()
{
    SqList L;										 //名为L的顺序表 
	initList(L);									//创建顺序表	
	elemType e1 = {"101010","数据结构",20.3};
	elemType e2 = {"101011","C",12.3};             //赋值 
    L.elem[0] = e1;L.length++;
    L.elem[1] = e2;L.length++; 
	cout<<"顺序表的第一个元素："<<"\t"
	<<L.elem[0].no<<"\t"
	<<L.elem[0].name<<"\t"
	<<L.elem[0].price<<endl;
	cout<<"顺序表的第二个元素："<<"\t"
	<<L.elem[1].no<<"\t"
	<<L.elem[1].name<<"\t"
	<<L.elem[1].price<<endl;
//	clearList(L);
	cout<<"L的当前长度："<<endl;
	cout<<GetLength(L)<<endl;
	if(isEmpty(L))cout<<"数据表为空"<<endl;
	else cout<<"数据表非空"<<endl;
	elemType e;                            //名为e的elemType类型 
	if(GetElem(L,2,e))                    //获取第二个元素 
	{
	cout<<"取值成功"<<endl;
	cout<<"第二个元素是："<<endl;
	cout<<e.no<<'\t'<<e.name<<'\t'<<e.price<<endl;	
	}
	else cout<<"不存在"<<endl; 
//	if(locateElem(L,2,e)) cout<<"find"<<endl;
//	else cout<<"error"<<endl;
	return 0;
}